$(function(){
	$('.number_input_widget>.des').click(function(){
		var number_input = $(this).next('input');
		var val = number_input.val();
		if(!val.match(/^\d+$/)){
			val = '2';
		}
		val = parseFloat(val);
		
		--val;
		if(typeof(number_input.attr('min'))){
			//检查最小值
			var min = parseFloat(number_input.attr('min'));
			if(min > val)return;
		}
		number_input.val(val);
		check_number_input(number_input);
	});
	$('.number_input_widget>.add').click(function(){
		var number_input = $(this).prev('input');
		var val = number_input.val();
		if(!val.match(/^\d+$/)){
			val = '1';
		}
		val = parseFloat(val);
		++val;
		if(typeof(number_input.attr('max'))){
			//检查最小值
			var max = parseFloat(number_input.attr('max'));
			if(max < val)return;
		}
		number_input.val(val);
		check_number_input(number_input);
	});
	$('.number_input_widget>input').keyup(function(){
		check_number_input(this);
	}).mouseup(function(){
		check_number_input(this);
	}).change(function(){
		check_number_input(this);
	});
});

/**
 * 发生错误
 */
function number_input_error(input, error_info){
	var number_input = $(input);
	number_input.addClass('error');
	number_input.set_focus({select : true});
	if(typeof(number_input.attr('error')) !== 'undefined'){
		var on_error = number_input.attr('error');
		eval(on_error + '("' + error_info + '")');
	}
}

function check_number_input(input){
	var number_input = $(input);
	var val = number_input.val();
	if(typeof(number_input.attr('rule'))){
		var rule = number_input.attr('rule');
		if(!val.match(rule)){
			number_input_error(input, 'rule');
			return false;
		}
	}
	val = parseFloat(val);
	if(typeof(number_input.attr('max'))){
		//检查最小值
		var max = parseFloat(number_input.attr('max'));
		if(max < val){
			number_input_error(input, 'max:' + max);
			return false
		}
	}
	if(typeof(number_input.attr('min'))){
		//检查最小值
		var min = parseFloat(number_input.attr('min'));
		if(min > val){
			number_input_error(input, 'min:' + min);
			return false
		}
	}
	if(number_input.hasClass('error')){
		number_input.removeClass('error');
	}
	number_widget_success(input);
	return true;
}

function number_widget_success(input){
	var number_input = $(input);
	if(typeof(number_input.attr('success')) !== 'undefined'){
		var on_success = number_input.attr('success');
		eval(on_success + '()');
	}
}